###########################################################################
# $Id: labourAssert.p 18 2009-05-04 06:18:03Z donbeave $
###########################################################################

@CLASS
labourAssert

@USE
pf/tests/pfAssert.p

@OPTIONS
locals

#----- Public -----

@required[strParam;strType]
  $aParam[$caller.[$strParam]]

# casting
  ^try{
    ^switch[$strType]{
      ^case[int]{
        $aParam(^aParam.int[])
      }
      ^case[double]{
        $aParam(^aParam.double[])
      }
    }
  }{
     $exception.handled(true)
   }

  $sThrowText[Parameter "$strParam" ^if(!def $strType){is not specified.}{is wrong (CLASS_NAME $strType != $aParam.CLASS_NAME).}]

  ^if(def $strParam && def $strType){
    ^pfAssert:isTrue($aParam is $strType)[$sThrowText]
  }{
     ^pfAssert:isTrue(def $aParam)[$sThrowText]
   }
